auto("fast");
var width = device.width;
var height = device.height;
log("当前分辨率：" + width + " X " + height);
//显示日志窗口
console.show();
//设置日志位置
console.setPosition(width / 50, height / 8);

log("音量-键，停止脚本运行");
threads.start(function () {
    //启用按键监听
    events.observeKey();
    //监听音量上键按下 停止
    events.onKeyDown("volume_down", function (event) {
        toast("脚本停止运行");
        console.hide();
        exit();
    });
});

// gkggOne();
// lzq_kgglgb();
// lzq_djljb();
// lzq_qgj();
// ksp();
// lzq();

//打开app
openApp();

var num = 1;
while (true) {
    log("抖音脚本第" + num + "次运行开始");
    ksp();
    log("视频观看完毕,休息5秒")
    sleep(5000);
    while (true) {
        lzq_btn();
        sleep(2000);
        if (text("金币收益").exists()) {
            sleep(3000);
            break;
        }
        log("进入任务列表失败，重新进入");
        sleep(2000);
    }
    sleep(5000);
    lzq();
    sleep(2000);
    log("抖音脚本第" + num + "次运行结束");
    sleep(3000);
    back();
    num++;
}

console.hide();
exit();

/**
 * 打开APP
 */
function openApp() {
    launchApp("抖音极速版");
    sleep(5000);
    if (text("我知道了").exists()) {
        log("我知道啦")
        var wzdl = text("我知道了").findOne();
        clickUtil(wzdl);
        sleep(3000);
    }
}

/**
 * 观看视频
 */
function ksp() {
    var center_x = width / 2;
    var center_y = height / 2;
    var numCount = random(1, 5);
    log("本次总共观看" + numCount + "个视频");
    for (var i = 0; i < numCount; i++) {
        log('观看第' + i + '个视频');
        //是否有进度条  
        //有进度条  观看时长 1-2分钟
        //无进度条  观看时长 10-30秒
        if (className("android.widget.SeekBar").desc("进度条").exists()) {
            var sleep_time = random(60000, 120000);
            sleep(sleep_time);
            var dj_1_x = random(center_x - 100, center_x + 100);
            var dj_1_y = random(center_y + 500, center_y + 600);
            var dj_2_x = random(center_x - 100, center_x + 100);
            var dj_2_y = random(center_y - 600, center_y - 500);
            var dj_hs = random(300, 500);
            swipe(dj_1_x, dj_1_y, dj_2_x, dj_2_y, dj_hs);
        } else {
            var sleep_time = random(10000, 30000);
            sleep(sleep_time);
            var dj_1_x = random(center_x - 100, center_x + 100);
            var dj_1_y = random(center_y + 500, center_y + 600);
            var dj_2_x = random(center_x - 100, center_x + 100);
            var dj_2_y = random(center_y - 600, center_y - 500);
            var dj_hs = random(300, 500);
            swipe(dj_1_x, dj_1_y, dj_2_x, dj_2_y, dj_hs);
        }
    }
}

/**
 * 点击来赚钱按钮
 */
function lzq_btn() {
    if (id("eyf").exists()) {
        //点击去赚钱
        id("eyf").findOne().click();
        lzq();
    } else if (id("e1u").exists()) {
        var lzq_but = id("e1u").findOne();
        clickUtil(lzq_but);
        lzq();
    } else if (id("chg").exists()) {
        var lzq_but = id("e1u").findOne();
        clickUtil(lzq_but);
        lzq();
    }
}

/**
 * 任务列表
 */
function lzq() {
    log("------点击去赚钱");
    if (text("去领取").exists()) {
        lzq_kgglgb();
        log("结束---去领取--休息5秒");
        sleep(5000);
    }
    sleep(1000);
    if (text("点击领金币").exists()) {
        lzq_djljb();
        log("结束---点击领金币--休息5秒");
        sleep(5000);
    }
    sleep(1000);
    if (text("去逛街").exists()) {
        lzq_qgj();
        log("结束---去逛街--休息5秒");
        sleep(5000);
        lzq_qgj_status = true;
    }
    sleep(3000);
}

/**
 * 看广告领金币
 * 
 */
function lzq_kgglgb() {

    log("------看广告领金币------开始------");
    if (text("去领取").exists()) {
        var kgglgb = text("去领取").findOne();
        clickUtil(kgglgb);
        sleep(3000);

        //看广告
        gkggOne();


        if (text("我知道了").exists()) {
            var wzdl = text("我知道了").findOne();
            clickUtil(wzdl);
            sleep(3000);
        }

    }
    log("------看广告领金币------结束------");
}

/**
 * 点击领金币
 */
function lzq_djljb() {
    log("------点击领金币------开始------");
    if (text("点击领金币").exists()) {
        var djljb = text("点击领金币").findOne();
        clickBounds(djljb);
        sleep(3000);

        //看广告赚金币
        if (desc("看广告视频再赚").exists()) {
            var kggljb = desc("看广告视频再赚").findOne();
            clickBounds(kggljb);
            sleep(3000);

            //看广告
            gkggOne();
        }


        if (text("我知道了").exists()) {
            var wzdl = text("我知道了").findOne();
            clickBounds(kggljb_lqjl);
            sleep(3000);
        }
    }
    log("------点击领金币------结束------");
}

/**
 * 逛街赚钱
 */
function lzq_qgj() {
    log("------逛街赚钱------开始------");
    if (text("去逛街").exists()) {
        var kgglgb = text("去逛街").findOne();
        clickUtil(kgglgb);
        sleep(5000);
        while (true) {
            sleep(random(2000, 5000));
            if (id("mu").className("android.widget.TextView").exists()) {
                var mv_obj = id("mu").className("android.widget.TextView").findOne();
                var mv_obj_text = mv_obj.text();
                if (regexDate(mv_obj_text)) {
                    log("去逛街,观看时间以满足");
                    sleep(5000);
                    back();
                    break;

                } else {
                    swipe(width / 2, height / 5 * 4, width / 2, height / 5, 500);
                }
            } else {
                break;
            }


        }
    }

    sleep(5000);
    if (text("金币收益").exists()) {
        sleep(3000);
        return;
    }
    log("------逛街赚钱------结束------");
}



//刷广告，公共类
function gkgg() {
    log("------刷广告------开始")
    sleep(1000);
    while (true) {
        log("------刷广告---休息3秒---");
        sleep(2000);
        if (className("com.lynx.tasm.behavior.ui.text.UIText").exists()) {
            var zkyg = className("com.lynx.tasm.behavior.ui.text.UIText").find();
            if (zkyg.nonEmpty()) {
                zkyg.forEach(function (value) {
                    if (value.desc().indexOf("再看一个获取") == 0) {
                        log("再看一个获取金币");
                        clickBounds(value);
                        return;
                    }
                })
            }
        }

        sleep(1000);
        if (text("金币收益").exists()) {
            sleep(3000);
            break
        } else if (desc("领取成功").exists() && text("领取奖励").exists() == false) {
            log("广告观看完毕，可以关闭");
            sleep(3000);
            if (text("关闭当前视频").exists()) {
                var kggljb_close = text("关闭当前视频").findOne();
                clickBounds(kggljb_close);
                sleep(3000);
            }

            if (desc("关闭，按钮").exists()) {
                var kggljb_close = desc("关闭，按钮").findOne();
                clickBounds(kggljb_close);
                sleep(3000);
            }
        } else if (desc("关闭，按钮").exists() && text("领取奖励").exists() == false) {
            log("关闭");
            sleep(3000);
            if (desc("关闭，按钮").exists()) {
                var kggljb_close = desc("关闭，按钮").findOne();
                clickBounds(kggljb_close);
                sleep(3000);
            }
        } else if (desc("返回").exists() && text("领取奖励").exists() == false) {
            log("返回");
            sleep(3000);
            if (desc("返回").exists()) {
                var kggljb_close = desc("返回").findOne();
                clickBounds(kggljb_close);
                sleep(3000);
            }
        } else if (text("领取奖励").exists()) {
            log("领取奖励");
            sleep(3000);
            var kggljb_lqjl = text("领取奖励").findOne();
            clickBounds(kggljb_lqjl);
            sleep(3000);
        } else if (text("继续观看").exists()) {
            log("继续观看");
            sleep(3000);
            var kggljb_gbdqsp = text("继续观看").findOne();
            clickBounds(kggljb_gbdqsp);
            sleep(3000);
        }

    }
    log("------刷广告------结束")

}

function gkggOne() {
    log("------刷广告------开始")
    sleep(1000);
    while (true) {
        log("------刷广告---休息6秒---")
        sleep(1000);
        if (text("金币收益").exists()) {
            sleep(3000);
            break;
        }
        sleep(1000);
        if (className("android.widget.ImageView").exists()) {
            var zkyg = className("android.widget.ImageView").find();
            if (zkyg.nonEmpty()) {
                zkyg.forEach(function (value) {
                    if (value.desc() != null) {

                        if (value.desc() == "返回") {
                            log("返回");
                            clickBounds(value);
                            return;
                        }
                    }

                })
            }
        }
        sleep(1000);
        if (text("金币收益").exists()) {
            sleep(3000);
            break;
        }
        sleep(1000);
        if (className("com.lynx.tasm.ui.image.UIImage").exists()) {
            var zkyg = className("com.lynx.tasm.ui.image.UIImage").find();
            if (zkyg.nonEmpty()) {
                zkyg.forEach(function (value) {
                    if (value.desc() != null) {
                        if (value.desc() == "关闭，按钮") {
                            log("关闭，按钮");
                            clickBounds(value);
                            return;
                        }
                    }

                })
            }
        }
        sleep(1000);
        if (text("金币收益").exists()) {
            sleep(3000);
            break;
        }
        sleep(1000);
        if (className("com.lynx.tasm.behavior.ui.text.UIText").exists()) {
            var zkyg = className("com.lynx.tasm.behavior.ui.text.UIText").find();
            if (zkyg.nonEmpty()) {
                zkyg.forEach(function (value) {
                    if (value.desc() != null) {

                        if (value.desc() == "领取奖励") {
                            log("领取奖励");
                            clickBounds(value);
                            return;
                        }

                        if (value.desc() == "继续观看") {
                            log("继续观看");
                            clickBounds(value);
                            return;
                        }

                        if (value.desc() == "领取成功") {
                            log("领取成功");
                            if (text("关闭当前视频").exists()) {
                                var kggljb_close = text("关闭当前视频").findOne();
                                clickBounds(kggljb_close);
                                sleep(1000);
                            }

                            if (desc("关闭，按钮").exists()) {
                                var kggljb_close = desc("关闭，按钮").findOne();
                                clickBounds(kggljb_close);
                                sleep(1000);
                            }

                            if (text("领取奖励").exists()) {
                                log("领取奖励");
                                sleep(3000);
                                var kggljb_lqjl = text("领取奖励").findOne();
                                clickBounds(kggljb_lqjl);
                                sleep(3000);
                            } 
                            return;
                        }

                        if (value.desc().indexOf("再看一个获取") == 0) {
                            log("再看一个获取金币");
                            clickBounds(value);
                            return;
                        }
                    }
                })
            }
        }
    }
    log("------刷广告------结束")

}

/**
 * 根据对象坐标点击操作
 * @param {*} obj 
 */
function clickBounds(obj) {
    var rect = obj.bounds();
    log("点击坐标：" + rect.centerX() + "," + rect.centerY());
    click(rect.centerX(), rect.centerY())
}

// 通用根据获取对象坐标点击操作
function clickUtil(obj) {
    var rect = obj.bounds();
    log("点击坐标：" + (rect.left + 10) + "," + (rect.top + 10))
    click(rect.left + 10, rect.top + 10)
}

//上滑
function upMove() {
    var center_x = device.width / 2;
    var center_y = device.height / 2;
    for (var i = 0; i < 100; i++) {
        //返回
        if (className("com.lynx.tasm.behavior.ui.text.FlattenUIText").text("金币收益").exists()) {
            sleep(3000);
            break
        }
        sleep(15000);
        var dj_1_x = random(center_x - 100, center_x + 100);
        var dj_1_y = random(center_y + 500, center_y + 600);
        var dj_2_x = random(center_x - 100, center_x + 100);
        var dj_2_y = random(center_y - 600, center_y - 500);
        var dj_hs = random(300, 500);
        swipe(dj_1_x, dj_1_y, dj_2_x, dj_2_y, dj_hs);
    }

}

//校验时间
function regexDate(date_text) {
    var regex_date = /^(\d{2})(:)(\d{2})$/;
    if (date_text != null && date_text != '') {
        if (date_text.match(regex_date) != null) {
            return true;
        }
    }
    return false;
}